package org.niu.str;

import java.util.HashMap;
import java.util.Map;

public class BuddyStrings {
    public boolean buddyStrings(String s, String goal) {
        if(s.length()!=goal.length()){
            return false;
        }
        char s1 = 0,s2 = 0,g1 = 0,g2 = 0;
        int cnt = 0;
        Map<Character,Integer> m = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            m.put(s.charAt(i),m.getOrDefault(s.charAt(i),0)+1);
            if (s.charAt(i)!=goal.charAt(i)){
                if(cnt==0){
                    s1 = s.charAt(i);
                    g1 = goal.charAt(i);
                }
                if(cnt==1){
                    s2 = s.charAt(i);
                    g2 = goal.charAt(i);
                }
                cnt++;
            }

        }
        int cntValues = 0;
        for(Integer value:m.values()){
            if(value>cntValues){
                cntValues = value;
            }
        }
        if(cnt==0&&cntValues >= 2){
            return true;
        }
        if(cnt==0&&cntValues < 2){
            return false;
        }
        if(s1==g1&&g1==s2&&s2==g2){
                return true;
            }
        if(cnt!=2){
            return false;
        }
        if(s1!=g2||g1!=s2){
            return false;
        }
        return true;
    }
}
